<?php

namespace app\admin\controller;

use think\Controller;
use think\Db;
use think\Request;

class Admin extends Base
{
    /**
     * 后台登录处理
     * @return \think\response\View
     */

    // 后台管理员列表
    public function index()
    {
        // 角色查询bk_admin
        // $admin = Db::name('admin') ->field(true) ->select();
        $list = Db::name('admin')->where('status',1)->paginate(2);
        $lists=$list->toArray();
        // var_dump($lists);
        $admin = $lists['data'];
        // var_dump($admin);
        // die;
        // 遍历查询每个角色对应的权限id
        foreach ($admin as $k => $value) {
            // var_dump($value);
            // $admin = array();
            $admin = $value;
            // var_dump($admin);
            $admin[$k]['limit'] = '';
            // 查询角色id    bk_userrole
            $userrole = Db::name('userrole') ->field('roleid') ->where('uid='.$value['id']) ->select();
            // var_dump($userrole);
            foreach ($userrole as $v ) {
                // var_dump($v);
                if (!empty($v)) {
                    $j = Db::name('role') ->field('name') ->where(['id' => $v['roleid']])->select();
                    // var_dump($j);
                    // 权限拼接
                    $admin[$k]['limit'] .= $j[0]['name'].'、';
                }
            }
            $admin[$k]['limit'] = trim($admin[$k]['limit'], '、');
            $admin = $admin[$k]['limit'];
        // var_dump($admin);
        }
        // var_dump($list);
        // $admin = $admin[1];
        // $admin = $admin['limit'];

        // die;


        
        // 查询状态为1的用户数据 并且每页显示10条数据


        // 助手函数
        return view('index', [
            'admin' => $admin,
            '_list' => $list
        ]);







    }



    // 后台添加管理员
    public function add()
    {
        $list = Db::table('bk_role')->field(['bk_role.id', 'bk_role.name'])->order('bk_role.id', 'ASC')->select();
        // dump($list);
        // 助手函数
        return view('add', [
            'list' => $list
        ]);
        return view('admin@admin/add');
    }

    // 后台添加管理员功能
    public function doAdd(Request $request)
    {
         $p = $request->post();
         // var_dump($p);die;

        // 处理数据
        $data = [
            'name' => $p['name'],
            'pass' => $p['pass']
        ];
        $result = Db::name('admin')->insertGetId($data);
        // var_dump($result);die;
        foreach ($p['box'] as $key => $value) {
            $datas = [
                'uid' => $result,
                'roleid' => $value
            ];
        $results = Db::name('userrole')->data($datas)->insert();
        }

        if ($result > 0 &&  $results > 0) {
            return $this->success('添加成功', url('admin/admin/index'));
        } else {
            return $this->error('添加失败');
        }
    }


    //后台管理员编辑页面
    public function edit($id)
    {
        $id = Request::instance()->param('id');
        // var_dump($id);
        // 用户表查询
        $admin = Db::table(['bk_admin'])->where('bk_admin.id = '.$id)->find();
        // var_dump($admin);
        // 查询用户的角色
        $userrole = Db::table(['bk_userrole'])->where('bk_userrole.uid='.$id)->select();
        // 查询角色名称
        $roles = Db::table(['bk_role'])->where(true)->select();
        // var_dump($roles);
        $list = array();
        foreach ($userrole as $key => $value) {
            // var_dump($value);
            $list[] = $value['roleid'];
        }
        // var_dump($list);

        // die;
        // 助手函数
        return view('admin/edit',[
               'admin' => $admin
               ,'userrole' => $userrole
               ,'roles' => $roles
               ,'list' => $list
        ]);
    }

    //执行管理员编辑的更新
    public function doEdit(Request $request, $id)
    {
        //接收更新的数据
        $info = $request->post();
        // var_dump($info);die;

        $status = $info['status'];
       
        if($status=='1'){
            $info['status'] ='1';
        }else if($status=='2'){
            $info['status'] ='0';
        }
        $data = [
            'name' => $info['name'],    
            'pass' => $info['pass'],
            'status' => $info['status']
        ];

        $result =Db::name('admin')->where('id',$id)->update($data);
        // var_dump($result);die;
        $results = Db::name('userrole')->where('bk_userrole.uid = '.$id)->delete();
        // var_dump($results);die;
        foreach ($info['box'] as $key => $value) {
            $datas = [
                'uid' => $id,
                'roleid' => $value
            ];
            $results = Db::name('userrole')->data($datas)->insert();
        }
        // var_dump($datas);
        // die;

        //执行SQL插入栏目表
        if($results > 0 ){
          return $this->success('更新成功', url('admin/admin/index'));
        }else{
             return $this->error('更新失败');
        }

    }

    //执行管理员删除
    public function delete($id)
    {
        $result = Db::name('admin')->delete($id);
        $results = Db::name('userrole')->where('bk_userrole.uid = '.$id)->delete();

        if ($result) {
            $info['status'] = true;
            $info['id'] = $id;
            $info['info'] = 'ID为: ' . $id . '的管理员删除成功!';
        } else {
            $info['status'] = false;
            $info['id'] = $id;
            $info['info'] = 'ID为: ' . $id . '的管理员删除失败,请重试!';
        }
        return json($info);
    }


    /**
     * 后台管理员角色
     * @return \think\Response
     */
    public function roles()
    {
        // 权限查询bk_role
        $power = Db::name('role') ->field(true) ->select();
        // var_dump($power);
        // 遍历查询每个角色对应的权限id
        foreach ($power as $k => $value) {
            // var_dump($value);
            $power[$k]['limit'] = '';
            // 查询权限id    bk_rolepower
            $userrole = Db::name('rolepower') ->field('powerid') ->where('roleid='.$value['id']) ->select();
            // var_dump($userrole);
            foreach ($userrole as $v ) {
                // var_dump($v);
                if (!empty($v)) {
                    $j = Db::name('power') ->field('name') ->where(['id' => $v['powerid']])->select();
                    var_dump($j);
                    // 权限拼接
                    $power[$k]['limit'] .= $j[0]['name'].'、';
                }
            }
            $power[$k]['limit'] = trim($power[$k]['limit'], '、');
        }
        // echo "string";die;
        // var_dump($power);
        // die;
        
        // 助手函数
        return view('roles', [
            'power' => $power
        ]);
    }

    // 后台添加管理员角色
    public function addroles()
    {
        $list = Db::table('bk_power')->field(['bk_power.id', 'bk_power.name'])->order('bk_power.id', 'ASC')->select();
        // dump($list);
        // 助手函数
        return view('addroles', [
            'list' => $list
        ]);
        return view('admin@admin/addroles');
    }
    // 后台添加管理员角色功能
    public function doAddroles(Request $request)
    {
         $p = $request->post();

        // 处理数据
        $data = [
            'name' => $p['name'],
        ];
        $result = Db::name('role')->insertGetId($data);

        foreach ($p['box'] as $key => $value) {
            $datas = [
                'roleid' => $result,
                'powerid' => $value
            ];
        $results = Db::name('rolepower')->data($datas)->insert();
        }

        if ($result > 0 && $result > 0) {
            return $this->success('添加成功', url('admin/admin/roles'));
        } else {
            return $this->error('添加失败');
        }
    }


    //后台角色编辑页面
    public function editroles($id)
    {
        $id = Request::instance()->param('id');
        // var_dump($id);
        // 角色表查询
        $admin = Db::table(['bk_role'])->where('bk_role.id = '.$id)->find();
        // var_dump($admin);
        // 查询角色的权限关联表
        $userrole = Db::table(['bk_rolepower'])->where(' bk_rolepower.roleid='.$id)->select();
        // 查询权限名
        $roles = Db::table(['bk_power'])->where(true)->select();
        // var_dump($roles);
        $list = array();
        foreach ($userrole as $key => $value) {
            // var_dump($value);
            $list[] = $value['powerid'];
        }
        // var_dump($list);

        // die;
        // 助手函数
        return view('admin/editroles',[
               'admin' => $admin
               ,'userrole' => $userrole
               ,'roles' => $roles
               ,'list' => $list
        ]);
    }

    //执行角色编辑的更新
    public function doEditroles(Request $request, $id)
    {
        //接收更新的数据
        $info = $request->post();
        // var_dump($info);die;
        $data = [
            'name' => $info['name'],    
        ];

        // 更新bk_role表中的数据
        $result =Db::name('role')->where('id',$id)->update($data);
        // var_dump($result);die;
        // 先删除有关当前用户的所有关联表的数据
        $results = Db::name('rolepower')->where('bk_rolepower.roleid = '.$id)->delete();
        // var_dump($results);die;
        foreach ($info['box'] as $key => $value) {
            $datas = [
                'roleid' => $id,
                'powerid' => $value
            ];
            // 向关联表rolepower中添加数据
            $results = Db::name('rolepower')->data($datas)->insert();
        }
        // var_dump($datas);
        // die;

        //执行SQL插入栏目表
        if($results > 0 ){
          return $this->success('更新成功', url('admin/admin/roles'));
        }else{
             return $this->error('更新失败');
        }

    }

    // 后台删除管理员角色功能
    public function delroles($id)
    {
        $result = Db::name('role')->delete($id);
        $results = Db::name('rolepower')->where('bk_rolepower.roleid = '.$id)->delete();
        if ($result) {
            $info['status'] = true;
            $info['id'] = $id;
            $info['info'] = 'ID为: ' . $id . '的管理员删除成功!';
        } else {
            $info['status'] = false;
            $info['id'] = $id;
            $info['info'] = 'ID为: ' . $id . '的管理员删除失败,请重试!';
        }
        return json($info);
    }


    /**
     * 后台角色权限
     * @return \think\Response
     */
    public function powers()
    {
        $list = Db::table('bk_power')->field(['id', 'name', 'controller', 'funcname'])->order('id', 'ASC')->select();
        // dump($list);
        // 助手函数
        return view('powers', [
            'list' => $list
        ]);
        return view('admin@admin/powers');
    }
        // 后台角色权限
    public function addpowers()
    {
        return view('admin@admin/addpowers');
    }

    // 后台添加角色权限管理
    public function doAddpowers(Request $request)
    {
         $p = $request->post();

        // 处理数据
        $data = [
            'name' => $p['name'],
            'controller' => $p['controller'],
            'funcname' => $p['funcname']
        ];

        $result = Db::name('power')->data($data)->insert();
        if ($result > 0) {
            return $this->success('添加成功', url('admin/admin/powers'));
        } else {
            return $this->error('添加失败');
        }
    }

    //后台权限编辑页面
    public function editpowers($id)
    {
        $id = Request::instance()->param('id');
        // var_dump($id);
        // 权限表查询
        $admin = Db::table(['bk_power'])->where('bk_power.id = '.$id)->find();
        // var_dump($admin);
        // die;
        // 助手函数
        return view('admin/editpowers',[
               'admin' => $admin
        ]);
    }

    //执行权限编辑的更新
    public function doEditpowers(Request $request, $id)
    {
        //接收更新的数据
        $info = $request->post();
        // var_dump($info);die;
        $data = [
            'name' => $info['name'],    
            'controller' => $info['controller'],    
            'funcname' => $info['funcname'],    
        ];
        // 更新bk_role表中的数据
        $result =Db::name('power')->where('id',$id)->update($data);
        // var_dump($result);die;
        // die;

        //执行SQL插入栏目表
        if($result > 0 ){
          return $this->success('更新成功', url('admin/admin/powers'));
        }else{
             return $this->error('更新失败');
        }
    }

    // 后台删除角色权限管理
    public function delpowers($id)
    {
        $result = Db::name('power')->delete($id);
        $results = Db::name('rolepower')->where('bk_rolepower.powerid = '.$id)->delete();
        if ($result) {
            $info['status'] = true;
            $info['id'] = $id;
            $info['info'] = 'ID为: ' . $id . '的管理员删除成功!';
        } else {
            $info['status'] = false;
            $info['id'] = $id;
            $info['info'] = 'ID为: ' . $id . '的管理员删除失败,请重试!';
        }
        return json($info);
    }


    // 管理员状态
    public function change($id)
    {
        $result = Db::name('admin')->find($id);
        if ($result['status']==1) {
            $result['status'] = 0;
            $info['info'] = '序号为: ' . $id . '的管理员已禁用!';
        } else {
            $result['status'] = 1;
            $info['info'] = '序号为: ' . $id . '的管理员已启用!';
        }
        $data = Db::name('admin')->where('id ='.$id)->update($result);
        if($data){
             return json($info);
        }
    }




}
